//
//  Extension+NSDate.swift
//  CZBKWB31
//
//  Created by Linkon Y on 16/8/15.
//  Copyright © 2016年 itcast. All rights reserved.
//

/*
 使用NSDateFormatter 和NSCalendar.currentCalendar()  注意问题
 - 它们的创建和销毁 对ios的性能影响很大 所以不要重复创建或者销毁
 - 解决办法 创建一个全局的(Swift做法)  oc中可以使用单例
 
 */


import UIKit
//时间格式化
private let df = NSDateFormatter()
//日历类
let calendar = NSCalendar.currentCalendar()


extension NSDate{
    //计算微博日期
    class func getSinaDate(createdAt:String) -> NSDate{
        //设置
        df.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        //本地化
        df.locale = NSLocale(localeIdentifier: "en_US")
        //微博时间
        let sinaDate = df.dateFromString(createdAt)!
        //        let sinaDate = sinaDate1.dateByAddingTimeInterval(-3600*2*10*365)
        return sinaDate
    }
     //得到微博格式化后的字符串
    var sinaDateDescription: String{
        //是否是今年
        let isThisYear = sinaThisYearStr(self)
        if isThisYear {
            //如果是今天
            if calendar.isDateInToday(self){
                //当前时间和微博时间 求差
                let s = Int(NSDate().timeIntervalSinceDate(self))
                //s < 60   显示刚刚
                if s < 60 {
                    return "刚刚"
                }else if s > 60 && s < 3600{
                    //XX分钟前
                    return "\(s/60)分钟前"
                }else {
                    //xx小时前
                    return "\(s/3600)小时前"
                }
                
            }else if calendar.isDateInYesterday(self){
                //如果是昨天
                df.dateFormat = "昨天 HH:mm"
            }else{
                //其他
                df.dateFormat = "MM月dd日 HH:mm"
            }
        }else{
            df.dateFormat = "yyyy年MM月dd日 HH:mm"
        }
        return df.stringFromDate(self)
    
    }
    
    //判断是否是今年
    func sinaThisYearStr(sinaDate: NSDate) -> Bool{
        //设置
        df.dateFormat = " yyyy"
        //本地化
        df.locale = NSLocale(localeIdentifier: "en_US")
        //微博时间字符串
        let sinaTimeStr = df.stringFromDate(sinaDate)
        //当前时间
        let currentTimeStr = df.stringFromDate(NSDate())
        
        return sinaTimeStr == currentTimeStr
    }



}
